/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ejemjtree;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

/**
 *
 * @author Paul
 */
public class EjemJTree extends JPanel {
    String datos[][] = {
        { "Colores","Rojo","Verde","Azul"},
        { "Sabores","Salado","Dulce","Amargo"},
        { "Longitud","Corta","Media","Larga"},
        { "Intensidad","Alta","Media","Baja"},
        { "Temperatura","Alta","Media","Baja"},
        { "Volumen","Alto","Medio","Bajo"},
    };
    static int i = 0;
    //Se definen los nodos del arbol
    DefaultMutableTreeNode raiz,rama,seleccion;
    JTree arbol;
    DefaultTreeModel modelo;
    //Se define un boton para agregar nodos
    JButton botonPrueba = new JButton( "Agregar" );
    
    public EjemJTree(){
        setLayout( new BorderLayout() );
        raiz = new DefaultMutableTreeNode( "raíz" );
        arbol = new JTree( raiz );
        
        // Se añade el árbol y se hace sobre un ScrollPane, para que se controle 
        //automáticamente la longitud del árbol cuando está desplegado, de forma 
        //que aparecerá una barra de desplazamiento para poder visualizarlo en su totalidad
        
        add( new JScrollPane( arbol ),BorderLayout.CENTER );
        modelo =(DefaultTreeModel)arbol.getModel();

        //Eventos
        botonPrueba.addActionListener( new ActionListener() {
            public void actionPerformed( ActionEvent evt ) {
                if( i < datos.length ) {
                    rama = new Rama( datos[i++] ).node();
                    seleccion = (DefaultMutableTreeNode)
                    arbol.getLastSelectedPathComponent();
                    if( seleccion == null )
                        seleccion = raiz;
                    // El modelo creará el evento adecuado, y en respuesta
                    // a él, el árbol se actualizará automáticamente
                    modelo.insertNodeInto( rama,seleccion,0 );
                    if ( i == datos.length )
                        botonPrueba.setEnabled( false );
                }
            }
        } );

          botonPrueba.setBackground( Color.blue );
          botonPrueba.setForeground( Color.white );
        // Se crea un panel para contener al botón
        JPanel panel = new JPanel();
        panel.add( botonPrueba );
        add( panel,BorderLayout.SOUTH );
    }


    public static void main( String args[] ) {
        //Se crea el frame
        JFrame frame = new JFrame( "Tutorial de Java, Swing" );
        frame.setDefaultCloseOperation( frame.EXIT_ON_CLOSE );
        frame.getContentPane().add( new EjemJTree(),BorderLayout.CENTER );
        frame.setSize( 200,500 );
        frame.setVisible( true );
    }
}